package com.atguigu.juc.collection;

import java.util.*;
import java.util.concurrent.CopyOnWriteArraySet;

public class SetTest {

    public static void main(String[] args) {

        Set<String> set =
                // new HashSet<>(); 非同步容器：抛异常java.util.ConcurrentModificationException
                // Collections.synchronizedSet(new HashSet<>()); 同步容器：读写操作都加同步锁，不抛异常，但性能差
                new CopyOnWriteArraySet<>(); // 并发容器：基于写时复制技术，读操作不加锁，写操作加锁。不抛异常，性能更好。

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                new Thread(()->{
                    String data = UUID.randomUUID().toString().substring(0, 5).toUpperCase();

                    // 写操作
                    set.add(data);

                    // 读操作
                    System.out.println(set);

                }).start();
            }
        }
    }

}
